﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DTO_MechSys;
using System.Data.SqlClient;
using System.Data;

namespace DAL_MechSys
{
    public class DALFerramenta: DALBase
    {
        public void Excluir(int ferramentaID)
        {
            try
            {
                string storedProssidere = "sp_ExcluirFerramenta";
                SqlParameter[] parameters =

                        {                    
                           new SqlParameter("@ferramentaID", ferramentaID)                                    
                        };
                ExecuteNonQuery(storedProssidere, parameters);

            }

            catch (SqlException)
            {
                throw;
            }
        }

        public void Inserir(DTOFerramenta dtoFerramenta)
        {
            try
            {
                string storedProssidere = "sp_InserirFerramenta";
                SqlParameter[] parameters =
                
                { 
                   new SqlParameter("@descricao", dtoFerramenta.Descricao),
                   new SqlParameter("@dataAquisicao", dtoFerramenta.DataAquisicao),
                   new SqlParameter("@valorCompra", dtoFerramenta.ValorCompra),
                   new SqlParameter("@marca", dtoFerramenta.Marca),                       
                   new SqlParameter("@fornecedorID", dtoFerramenta.FornecedorID),
                   new SqlParameter("@descontinuando", dtoFerramenta.Descontinuando),

                };
                ExecuteNonQuery(storedProssidere, parameters);

            }

            catch (SqlException)
            {
                throw;
            }
        }

        public void Atualizar(DTOFerramenta dtoFerramenta)
        {
            try
            {
                string storedProssidere = "sp_AtualizarFerramenta";
                SqlParameter[] parameters =

                {                  
                   new SqlParameter("@descricao", dtoFerramenta.Descricao),
                   new SqlParameter("@dataAquisicao", dtoFerramenta.DataAquisicao),
                   new SqlParameter("@valorCompra", dtoFerramenta.ValorCompra),
                   new SqlParameter("@marca", dtoFerramenta.Marca),                       
                   new SqlParameter("@fornecedorID", dtoFerramenta.FornecedorID),
                   new SqlParameter("@descontinuando", dtoFerramenta.Descontinuando),       
                   new SqlParameter("@ferramentaID", dtoFerramenta.FerramentaID),
                };
                ExecuteNonQuery(storedProssidere, parameters);

            }

            catch (SqlException)
            {
                throw;
            }
        }

        public List<DTOFerramenta> BuscarFerramentaCadastrados()
        {
            List<DTOFerramenta> lstFerramenta = new List<DTOFerramenta>();

            try
            {
                string storedProssidere = "sp_BuscarFerramentasCadastrados";
                using (SqlDataReader sqlDataReader = ExecuteReader(storedProssidere))
                {
                    while (sqlDataReader.Read())
                    {

                        DTOFerramenta dtoFerramenta = CriarFerramenta(sqlDataReader);

                        lstFerramenta.Add(dtoFerramenta);

                    }
                }
            }
            catch (SqlException)
            {
                throw;
            }
            return lstFerramenta;
        }

        private DTOFerramenta CriarFerramenta(SqlDataReader sqlDataReader)
        {
            try
            {
                DTOFerramenta dtoFerramenta = new DTOFerramenta();

                if (!string.IsNullOrEmpty(sqlDataReader["FerramentaID"].ToString()))
                {
                    dtoFerramenta.FerramentaID = (int)sqlDataReader["FerramentaID"];
                }

                if (!string.IsNullOrEmpty(sqlDataReader["Descricao"].ToString()))
                {
                    dtoFerramenta.Descricao = (string)sqlDataReader["Descricao"];
                }


                if (!string.IsNullOrEmpty(sqlDataReader["FornecedorID"].ToString()))
                {
                    dtoFerramenta.FornecedorID = (int)sqlDataReader["FornecedorID"];
                }


                if (!string.IsNullOrEmpty(sqlDataReader["ValorCompra"].ToString()))
                {
                    dtoFerramenta.ValorCompra = float.Parse(sqlDataReader["ValorCompra"].ToString());
                }

                if (!string.IsNullOrEmpty(sqlDataReader["Marca"].ToString()))
                {
                    dtoFerramenta.Marca = (sqlDataReader["Marca"].ToString());
                    
                }

                if (!string.IsNullOrEmpty(sqlDataReader["Descontinuando"].ToString()))
                {
                    dtoFerramenta.Descontinuando = bool.Parse(sqlDataReader["Descontinuando"].ToString());
                }

                if (!string.IsNullOrEmpty(sqlDataReader["DataAquisicao"].ToString()))
                {
                    dtoFerramenta.DataAquisicao = DateTime.Parse(sqlDataReader["DataAquisicao"].ToString());
                }

                return dtoFerramenta;
            }
            catch (Exception)
            {
                throw;
            }
        }

        public List<DTOFerramenta> PesquisarFerramenta(string descricao, int codigo)
        {
            List<DTOFerramenta> lstFerramenta = new List<DTOFerramenta>();

            try
            {
                string storedProssidere = "sp_BuscarFerramentaPesquisa";

                SqlParameter[] parameters =                
                { 
                   new SqlParameter("@string", descricao),
                   new SqlParameter("@int", codigo)

                };
                using (SqlDataReader sqlDataReader = ExecuteReader(storedProssidere, parameters))
                {
                    while (sqlDataReader.Read())
                    {
                        DTOFerramenta dtoFerramenta = CriarFerramenta(sqlDataReader);

                        lstFerramenta.Add(dtoFerramenta);
                    }
                }
            }
            catch (SqlException)
            {
                throw;
            }
            return lstFerramenta;
        }
    }
}
